package cn.cnic.security.nssap.stearm.etl.handler;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;

public interface AlarmHandler<T> {

    /**
     * 把json日志转换成 数据库表实体类
     * @param jsonOriginal json原始日志
     * @return 数据库的映射实体
     */
    T process(String jsonOriginal);

    /**
     * 单挑插入数据库
     * @param entity
     * @return 影响行数
     */
    int insertDB(T entity);

    /**
     * 批量插入数据库
     * @param list 集合
     */
    void batchInsert(List<T> list);

    /**
     * prepareStatement 批量插入模式，优先用时
     * 注意：不要使用addBatch()方法
     * @param json 原始json字符串
     * @param preparedStatement Connection.prepareStatement
     * @param sql 插入的sql语句
     */
    void prepareStatementBatch(String json, PreparedStatement preparedStatement,String sql) throws SQLException;


}
